<?php
namespace App\Service\Pay;

use Hyperf\Utils\Str;

class Base
{
    const URL = 'https://api-mop.chinaums.com/';
    
    // 获取配置
    protected function getConfig($name)
    {
        return PayService::$config[$name];
    }
    
    // 获取随机数
    protected function getRand($num = 16)
    {
        return Str::random($num);
    }
    
    // sha256 hex 加密
    protected function shaHex($str)
    {
        return bin2hex(hash('sha256', $str, true));
    }
    
    // 使用 Key 算出
    protected function shaHmac($str)
    {
        return base64_encode(hash_hmac('sha256', $str, $this->getConfig('appkey'), true));
    }
    
    // 原样JSON
    protected function makeJson($data)
    {
        return json_encode($data, JSON_UNESCAPED_UNICODE);
    }
    
    // 拼接变量
    protected function makeParame($data, $a = '&', $b = '=')
    {
        // 剔除签名
        if(isset($data['sign']))
        {
            unset($data['sign']);
        }
        
        // 排序
        ksort($data);
        
        // 拼接变量
        $temp = [];
        
        foreach($data as $key => $item)
        {
            $temp[] = $key . $b . (is_array($item) ? $this->makeJson($item) : $item);
        }

        return implode($a, $temp);
    }
}